package com.memento.demo1;

/**
 * “白箱”备忘录模式的实现 　　备忘录角色对任何对象都提供一个接口，即宽接口，备忘录角色的内部所存储的状态就对所有对象公开。因此这个实现又叫做“白箱实现”。
 * 
 * 　　“白箱”实现将发起人角色的状态存储在一个大家都看得到的地方，因此是破坏封装性的。但是通过程序员自律，同样可以在一定程度上实现模式的大部分用意。
 * 因此白箱实现仍然是有意义的。
 * 
 * @author Administrator
 *
 */
public class Test {

	public static void main(String[] args) {
		Originator o = new Originator();
		// 改变负责人对象的状态
		o.setState("on");
		o.display();

		Caretaker c = new Caretaker();
		// 创建备忘录对象，并将发起人对象的状态储存起来
		c.saveMemento(o.createMemento());

		// 修改发起人的状态
		o.setState("Off");
		o.display();

		// 恢复发起人对象的状态
		o.restoreMemento(c.retrieveMemento());
		o.display();
	}

}
